package mapper;

import org.apache.ibatis.annotations.Param;
import bean.Note;
import java.util.List;

public interface NoteMapper {
    // 新增笔记
    int insertNote(Note note);
    // 查询当前用户全部笔记
    List<Note> selectAllNote(@Param("userId") Integer userId);

    // 分页查询（可选分类过滤）
    List<Note> selectPaged(@Param("userId") Integer userId,
                           @Param("categoryId") Integer categoryId,
                           @Param("offset") Integer offset,
                           @Param("pageSize") Integer pageSize);

    // 统计数量（可选分类过滤）
    int countByFilter(@Param("userId") Integer userId,
                      @Param("categoryId") Integer categoryId);

    // 查询单条笔记详情
    Note selectById(@Param("id") Integer id, @Param("userId") Integer userId);

    // 更新笔记
    int updateNote(Note note);

    // 逻辑删除笔记
    int deleteLogic(@Param("id") Integer id, @Param("userId") Integer userId);

    // 搜索笔记（支持可选分类过滤 + 分页）
    List<Note> searchNotes(@Param("userId") Integer userId,
                           @Param("keyword") String keyword,
                           @Param("categoryId") Integer categoryId,
                           @Param("offset") Integer offset,
                           @Param("pageSize") Integer pageSize);

    // 搜索总数（用于分页）
    int countBySearch(@Param("userId") Integer userId,
                      @Param("keyword") String keyword,
                      @Param("categoryId") Integer categoryId);

    // 统计笔记总数
    int countByUserId(@Param("userId") Integer userId);

    // 查询最近7天的笔记
    List<Note> selectRecent7Days(@Param("userId") Integer userId);
}